@dfinity/nns 1.0.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/README.md +32 -261
  2. package/dist/cjs/index.cjs.js +2 -8
  3. package/dist/cjs/index.cjs.js.map +4 -4
  4. package/dist/esm/{chunk-OFXRZRFU.js → chunk-IJWQXUQ5.js} +2 -2
  5. package/dist/esm/chunk-KCY3PAEP.js +2 -0
  6. package/dist/esm/chunk-KCY3PAEP.js.map +7 -0
  7. package/dist/esm/chunk-LARRGLCK.js +20 -0
  8. package/dist/esm/chunk-LARRGLCK.js.map +7 -0
  9. package/dist/esm/{chunk-QJA26RTP.js → chunk-YKKQOXDQ.js} +2 -2
  10. package/dist/esm/genesis_token.canister.js +1 -1
  11. package/dist/esm/governance.canister.js +1 -1
  12. package/dist/esm/index.js +1 -1
  13. package/dist/esm/index.js.map +1 -1
  14. package/dist/esm/sns_wasm.canister.js +1 -1
  15. package/dist/types/canisters/governance/request.converters.d.ts +1 -1
  16. package/dist/types/constants/canister_ids.d.ts +0 -1
  17. package/dist/types/constants/constants.d.ts +0 -4
  18. package/dist/types/errors/governance.errors.d.ts +0 -2
  19. package/dist/types/governance.canister.d.ts +1 -1
  20. package/dist/types/index.d.ts +0 -7
  21. package/dist/types/types/common.d.ts +0 -1
  22. package/package.json +2 -1
  23. package/dist/candid/ledger.certified.idl.d.ts +0 -2
  24. package/dist/candid/ledger.certified.idl.js +0 -245
  25. package/dist/candid/ledger.d.ts +0 -215
  26. package/dist/candid/ledger.did +0 -380
  27. package/dist/candid/ledger.idl.d.ts +0 -2
  28. package/dist/candid/ledger.idl.js +0 -265
  29. package/dist/esm/account_identifier.js +0 -2
  30. package/dist/esm/account_identifier.js.map +0 -7
  31. package/dist/esm/chunk-2MZ7K2GY.js +0 -4
  32. package/dist/esm/chunk-2MZ7K2GY.js.map +0 -7
  33. package/dist/esm/chunk-DGJWOAUC.js +0 -2
  34. package/dist/esm/chunk-DGJWOAUC.js.map +0 -7
  35. package/dist/esm/chunk-H5FXE6EH.js +0 -8
  36. package/dist/esm/chunk-H5FXE6EH.js.map +0 -7
  37. package/dist/esm/chunk-IS3C7V4B.js +0 -2
  38. package/dist/esm/chunk-IS3C7V4B.js.map +0 -7
  39. package/dist/esm/chunk-JCUF5KWH.js +0 -2
  40. package/dist/esm/chunk-JCUF5KWH.js.map +0 -7
  41. package/dist/esm/chunk-TETJJ4EX.js +0 -20
  42. package/dist/esm/chunk-TETJJ4EX.js.map +0 -7
  43. package/dist/esm/chunk-WDXBCCBB.js +0 -2
  44. package/dist/esm/chunk-WDXBCCBB.js.map +0 -7
  45. package/dist/esm/chunk-ZMUQLPST.js +0 -2
  46. package/dist/esm/chunk-ZMUQLPST.js.map +0 -7
  47. package/dist/esm/icp.js +0 -2
  48. package/dist/esm/icp.js.map +0 -7
  49. package/dist/esm/ledger.canister.js +0 -2
  50. package/dist/esm/ledger.canister.js.map +0 -7
  51. package/dist/types/account_identifier.d.ts +0 -29
  52. package/dist/types/canisters/ledger/ledger.request.converts.d.ts +0 -7
  53. package/dist/types/errors/ledger.errors.d.ts +0 -27
  54. package/dist/types/icp.d.ts +0 -22
  55. package/dist/types/ledger.canister.d.ts +0 -48
  56. package/dist/types/types/ledger.options.d.ts +0 -15
  57. package/dist/types/types/ledger_converters.d.ts +0 -19
  58. package/dist/types/utils/account_identifier.utils.d.ts +0 -5
  59. package/dist/types/utils/accounts.utils.d.ts +0 -6
  60. /package/dist/esm/{chunk-OFXRZRFU.js.map → chunk-IJWQXUQ5.js.map} +0 -0
  61. /package/dist/esm/{chunk-QJA26RTP.js.map → chunk-YKKQOXDQ.js.map} +0 -0
@@ -1,2 +0,0 @@
1
- import{a as g}from"./chunk-DGJWOAUC.js";import{a as T,b as I,c as D}from"./chunk-2MZ7K2GY.js";import{b as L}from"./chunk-ZMUQLPST.js";import{createServices as pe}from"@dfinity/utils";var ee=({IDL:e})=>{let t=e.Vec(e.Nat8),r=e.Record({owner:e.Principal,subaccount:e.Opt(t)}),n=e.Record({maximum_number_of_accounts:e.Opt(e.Nat64),icrc1_minting_account:e.Opt(r)}),c=e.Record({e8s:e.Nat64}),a=e.Text,d=e.Record({secs:e.Nat64,nanos:e.Nat32}),f=e.Record({num_blocks_to_archive:e.Nat64,trigger_threshold:e.Nat64,max_message_size_bytes:e.Opt(e.Nat64),cycles_for_archive_creation:e.Opt(e.Nat64),node_max_memory_size_bytes:e.Opt(e.Nat64),controller_id:e.Principal}),b=e.Record({send_whitelist:e.Vec(e.Principal),token_symbol:e.Opt(e.Text),transfer_fee:e.Opt(c),minting_account:a,transaction_window:e.Opt(d),max_message_size_bytes:e.Opt(e.Nat64),icrc1_minting_account:e.Opt(r),archive_options:e.Opt(f),initial_values:e.Vec(e.Tuple(a,c)),token_name:e.Opt(e.Text)}),P=e.Variant({Upgrade:e.Opt(n),Init:b}),o=e.Nat64,y=e.Record({start:o,length:e.Nat64}),u=e.Nat64,i=e.Vec(e.Nat8),l=e.Record({timestamp_nanos:e.Nat64}),s=e.Variant({Approve:e.Record({fee:c,from:i,allowance_e8s:e.Int,expires_at:e.Opt(l),spender:i}),Burn:e.Record({from:i,amount:c}),Mint:e.Record({to:i,amount:c}),Transfer:e.Record({to:i,fee:c,from:i,amount:c}),TransferFrom:e.Record({to:i,fee:c,from:i,amount:c,spender:i})}),S=e.Record({memo:u,icrc1_memo:e.Opt(e.Vec(e.Nat8)),operation:e.Opt(s),created_at_time:l}),F=e.Record({transaction:S,timestamp:l,parent_hash:e.Opt(e.Vec(e.Nat8))}),C=e.Record({blocks:e.Vec(F)}),A=e.Variant({BadFirstBlockIndex:e.Record({requested_index:o,first_valid_index:o}),Other:e.Record({error_message:e.Text,error_code:e.Nat64})}),E=e.Variant({Ok:C,Err:A}),U=e.Func([y],[E],[]),p=e.Record({certificate:e.Opt(e.Vec(e.Nat8)),blocks:e.Vec(F),chain_length:e.Nat64,first_block_index:o,archived_blocks:e.Vec(e.Record({callback:U,start:o,length:e.Nat64}))}),v=e.Record({account:i}),x=e.Record({account:a}),R=e.Record({canister_id:e.Principal}),z=e.Record({archives:e.Vec(R)}),m=e.Nat,k=e.Variant({Int:e.Int,Nat:e.Nat,Blob:e.Vec(e.Nat8),Text:e.Text}),H=e.Nat64,M=e.Record({to:r,fee:e.Opt(m),memo:e.Opt(e.Vec(e.Nat8)),from_subaccount:e.Opt(t),created_at_time:e.Opt(H),amount:m}),V=e.Nat,W=e.Variant({GenericError:e.Record({message:e.Text,error_code:e.Nat}),TemporarilyUnavailable:e.Null,BadBurn:e.Record({min_burn_amount:m}),Duplicate:e.Record({duplicate_of:V}),BadFee:e.Record({expected_fee:m}),CreatedInFuture:e.Record({ledger_time:e.Nat64}),TooOld:e.Null,InsufficientFunds:e.Record({balance:m})}),Q=e.Variant({Ok:V,Err:W}),G=e.Record({to:a,fee:c,memo:u,from_subaccount:e.Opt(t),created_at_time:e.Opt(l),amount:c}),J=e.Record({to:i,fee:c,memo:u,from_subaccount:e.Opt(t),created_at_time:e.Opt(l),amount:c}),$=e.Variant({TxTooOld:e.Record({allowed_window_nanos:e.Nat64}),BadFee:e.Record({expected_fee:c}),TxDuplicate:e.Record({duplicate_of:o}),TxCreatedInFuture:e.Null,InsufficientFunds:e.Record({balance:c})}),j=e.Variant({Ok:o,Err:$}),K=e.Record({}),X=e.Record({transfer_fee:c});return e.Service({_blocks:e.Func([y],[p],[]),account_balance:e.Func([v],[c],[]),account_balance_dfx:e.Func([x],[c],[]),archives:e.Func([],[z],[]),decimals:e.Func([],[e.Record({decimals:e.Nat32})],[]),icrc1_balance_of:e.Func([r],[m],[]),icrc1_decimals:e.Func([],[e.Nat8],[]),icrc1_fee:e.Func([],[m],[]),icrc1_metadata:e.Func([],[e.Vec(e.Tuple(e.Text,k))],[]),icrc1_minting_account:e.Func([],[e.Opt(r)],[]),icrc1_name:e.Func([],[e.Text],[]),icrc1_supported_standards:e.Func([],[e.Vec(e.Record({url:e.Text,name:e.Text}))],[]),icrc1_symbol:e.Func([],[e.Text],[]),icrc1_total_supply:e.Func([],[m],[]),icrc1_transfer:e.Func([M],[Q],[]),name:e.Func([],[e.Record({name:e.Text})],[]),send_dfx:e.Func([G],[o],[]),symbol:e.Func([],[e.Record({symbol:e.Text})],[]),transfer:e.Func([J],[j],[]),transfer_fee:e.Func([K],[X],[])})};var te=({IDL:e})=>{let t=e.Vec(e.Nat8),r=e.Record({owner:e.Principal,subaccount:e.Opt(t)}),n=e.Record({maximum_number_of_accounts:e.Opt(e.Nat64),icrc1_minting_account:e.Opt(r)}),c=e.Record({e8s:e.Nat64}),a=e.Text,d=e.Record({secs:e.Nat64,nanos:e.Nat32}),f=e.Record({num_blocks_to_archive:e.Nat64,trigger_threshold:e.Nat64,max_message_size_bytes:e.Opt(e.Nat64),cycles_for_archive_creation:e.Opt(e.Nat64),node_max_memory_size_bytes:e.Opt(e.Nat64),controller_id:e.Principal}),b=e.Record({send_whitelist:e.Vec(e.Principal),token_symbol:e.Opt(e.Text),transfer_fee:e.Opt(c),minting_account:a,transaction_window:e.Opt(d),max_message_size_bytes:e.Opt(e.Nat64),icrc1_minting_account:e.Opt(r),archive_options:e.Opt(f),initial_values:e.Vec(e.Tuple(a,c)),token_name:e.Opt(e.Text)}),P=e.Variant({Upgrade:e.Opt(n),Init:b}),o=e.Vec(e.Nat8),y=e.Record({account:o}),u=e.Record({account:a}),i=e.Record({canister_id:e.Principal}),l=e.Record({archives:e.Vec(i)}),s=e.Nat,S=e.Variant({Int:e.Int,Nat:e.Nat,Blob:e.Vec(e.Nat8),Text:e.Text}),F=e.Nat64,C=e.Record({to:r,fee:e.Opt(s),memo:e.Opt(e.Vec(e.Nat8)),from_subaccount:e.Opt(t),created_at_time:e.Opt(F),amount:s}),A=e.Nat,E=e.Variant({GenericError:e.Record({message:e.Text,error_code:e.Nat}),TemporarilyUnavailable:e.Null,BadBurn:e.Record({min_burn_amount:s}),Duplicate:e.Record({duplicate_of:A}),BadFee:e.Record({expected_fee:s}),CreatedInFuture:e.Record({ledger_time:e.Nat64}),TooOld:e.Null,InsufficientFunds:e.Record({balance:s})}),U=e.Variant({Ok:A,Err:E}),p=e.Nat64,v=e.Record({start:p,length:e.Nat64}),x=e.Nat64,R=e.Record({timestamp_nanos:e.Nat64}),z=e.Variant({Approve:e.Record({fee:c,from:o,allowance_e8s:e.Int,expires_at:e.Opt(R),spender:o}),Burn:e.Record({from:o,amount:c}),Mint:e.Record({to:o,amount:c}),Transfer:e.Record({to:o,fee:c,from:o,amount:c}),TransferFrom:e.Record({to:o,fee:c,from:o,amount:c,spender:o})}),m=e.Record({memo:x,icrc1_memo:e.Opt(e.Vec(e.Nat8)),operation:e.Opt(z),created_at_time:R}),k=e.Record({transaction:m,timestamp:R,parent_hash:e.Opt(e.Vec(e.Nat8))}),H=e.Record({blocks:e.Vec(k)}),M=e.Variant({BadFirstBlockIndex:e.Record({requested_index:p,first_valid_index:p}),Other:e.Record({error_message:e.Text,error_code:e.Nat64})}),V=e.Variant({Ok:H,Err:M}),W=e.Func([v],[V],["query"]),Q=e.Record({certificate:e.Opt(e.Vec(e.Nat8)),blocks:e.Vec(k),chain_length:e.Nat64,first_block_index:p,archived_blocks:e.Vec(e.Record({callback:W,start:p,length:e.Nat64}))}),G=e.Record({to:a,fee:c,memo:x,from_subaccount:e.Opt(t),created_at_time:e.Opt(R),amount:c}),J=e.Record({to:o,fee:c,memo:x,from_subaccount:e.Opt(t),created_at_time:e.Opt(R),amount:c}),$=e.Variant({TxTooOld:e.Record({allowed_window_nanos:e.Nat64}),BadFee:e.Record({expected_fee:c}),TxDuplicate:e.Record({duplicate_of:p}),TxCreatedInFuture:e.Null,InsufficientFunds:e.Record({balance:c})}),j=e.Variant({Ok:p,Err:$}),K=e.Record({}),X=e.Record({transfer_fee:c});return e.Service({account_balance:e.Func([y],[c],["query"]),account_balance_dfx:e.Func([u],[c],["query"]),archives:e.Func([],[l],["query"]),decimals:e.Func([],[e.Record({decimals:e.Nat32})],["query"]),icrc1_balance_of:e.Func([r],[s],["query"]),icrc1_decimals:e.Func([],[e.Nat8],["query"]),icrc1_fee:e.Func([],[s],["query"]),icrc1_metadata:e.Func([],[e.Vec(e.Tuple(e.Text,S))],["query"]),icrc1_minting_account:e.Func([],[e.Opt(r)],["query"]),icrc1_name:e.Func([],[e.Text],["query"]),icrc1_supported_standards:e.Func([],[e.Vec(e.Record({url:e.Text,name:e.Text}))],["query"]),icrc1_symbol:e.Func([],[e.Text],["query"]),icrc1_total_supply:e.Func([],[s],["query"]),icrc1_transfer:e.Func([C],[U],[]),name:e.Func([],[e.Record({name:e.Text})],["query"]),query_blocks:e.Func([v],[Q],["query"]),send_dfx:e.Func([G],[p],[]),symbol:e.Func([],[e.Record({symbol:e.Text})],["query"]),transfer:e.Func([J],[j],[]),transfer_fee:e.Func([K],[X],["query"])})};import{arrayOfNumberToUint8Array as de,toNullable as B}from"@dfinity/utils";var ce=async e=>{let t=new Uint8Array(e).buffer,{Subaccount:r}=await T(),n=new r;return n.setSubAccount(new Uint8Array(t)),n},Y=async e=>{let{ICPTs:t}=await T(),r=new t;return r.setE8s(e.toString(10)),r},re=e=>({e8s:e}),ne=({to:e,amount:t,memo:r,fee:n,fromSubAccount:c,createdAt:a})=>({to:e.toUint8Array(),fee:re(n??g),amount:re(t),memo:r??BigInt(0),created_at_time:a!==void 0?[{timestamp_nanos:a}]:[],from_subaccount:c===void 0?[]:[de(c)]}),ae=({fromSubAccount:e,to:t,amount:r,fee:n,icrc1Memo:c,createdAt:a})=>({to:t,fee:B(n??g),amount:r,memo:B(c),created_at_time:B(a),from_subaccount:B(e)});import{convertStringToE8s as le}from"@dfinity/utils";var _=class extends Error{},Z=class extends _{},N=class extends _{constructor(r){super();this.balance=r}},O=class extends _{constructor(r){super();this.allowed_window_secs=r}},h=class extends _{},w=class extends _{constructor(r){super();this.duplicateOf=r}},q=class extends _{constructor(r){super();this.expectedFee=r}},oe=e=>"TxDuplicate"in e?new w(e.TxDuplicate.duplicate_of):"InsufficientFunds"in e?new N(e.InsufficientFunds.balance.e8s):"TxCreatedInFuture"in e?new h:"TxTooOld"in e?new O(Number(e.TxTooOld.allowed_window_nanos)):"BadFee"in e?new q(e.BadFee.expected_fee.e8s):new _(`Unknown error type ${JSON.stringify(e)}`),se=e=>"Duplicate"in e?new w(e.Duplicate.duplicate_of):"InsufficientFunds"in e?new N(e.InsufficientFunds.balance):"CreatedInFuture"in e?new h:"TooOld"in e?new O:"BadFee"in e?new q(e.BadFee.expected_fee):new _(`Unknown error type ${JSON.stringify(e)}`),ie=e=>{let{message:t}=e;if(t.includes("Reject code: 5")){if(t.match(/Sending from (.*) is not allowed/))return new Z;{let r=t.match(/transaction.*duplicate.* in block (\d+)/);if(r&&r.length>1)return new w(BigInt(r[1]))}{let r=t.match(/debit account.*, current balance: (\d*(\.\d*)?)/);if(r&&r.length>1){let n=le(r[1]);if(typeof n=="bigint")return new N(n)}}if(t.includes("is in future"))return new h;{let r=t.match(/older than (\d+)/);if(r&&r.length>1)return new O(Number.parseInt(r[1]))}}throw e};var ue=class e{constructor(t,r,n,c,a,d,f=!1){this.agent=t;this.canisterId=r;this.service=n;this.certifiedService=c;this.updateFetcher=a;this.queryFetcher=d;this.hardwareWallet=f;this.accountBalance=async({accountIdentifier:t,certified:r=!0})=>this.hardwareWallet?this.accountBalanceHardwareWallet({accountIdentifier:t,certified:r}):(await(r?this.certifiedService:this.service).account_balance({account:t.toUint8Array()})).e8s;this.transactionFee=async()=>{let{transfer_fee:{e8s:t}}=await this.service.transfer_fee({});return t};this.transfer=async t=>{if(this.hardwareWallet)return this.transferHardwareWallet(t);t.fee===void 0&&(t.fee=this.hardwareWallet?g:await this.transactionFee());let r=ne(t),n=await this.certifiedService.transfer(r);if("Err"in n)throw oe(n.Err);return n.Ok};this.icrc1Transfer=async t=>{t.fee===void 0&&(t.fee=this.hardwareWallet?g:await this.transactionFee());let r=ae(t),n=await this.certifiedService.icrc1_transfer(r);if("Err"in n)throw se(n.Err);return n.Ok};this.accountBalanceHardwareWallet=async({accountIdentifier:t,certified:r=!0})=>{let n=r?this.updateFetcher:this.queryFetcher,{AccountBalanceRequest:c,ICPTs:a}=await T(),d=new c;d.setAccount(await t.toProto());let f=await n({agent:this.agent,canisterId:this.canisterId,methodName:"account_balance_pb",arg:d.serializeBinary()});return BigInt(a.deserializeBinary(new Uint8Array(f)).getE8s())};this.transferHardwareWallet=async({to:t,amount:r,memo:n,fee:c,fromSubAccount:a,createdAt:d})=>{let{SendRequest:f,Payment:b,Memo:P,TimeStamp:o,BlockHeight:y}=await T(),u=new f;u.setTo(await t.toProto());let i=new b;i.setReceiverGets(await Y(r)),u.setPayment(i),u.setMaxFee(await Y(c??g));let l=new P;if(l.setMemo((n??BigInt(0)).toString()),u.setMemo(l),d!==void 0){let s=new o;s.setTimestampNanos(d.toString()),u.setCreatedAtTime(s)}a!==void 0&&u.setFromSubaccount(await ce(a));try{let s=await this.updateFetcher({agent:this.agent,canisterId:this.canisterId,methodName:"send_pb",arg:u.serializeBinary()});return BigInt(y.deserializeBinary(s).getHeight())}catch(s){throw s instanceof Error?ie(s):s}}}static create(t={}){let r=t.canisterId??L,{service:n,certifiedService:c,agent:a}=pe({options:{...t,canisterId:r},idlFactory:te,certifiedIdlFactory:ee});return new e(a,r,n,c,t.updateCallOverride??I,t.queryCallOverride??D,t.hardwareWallet)}};export{_ as a,Z as b,N as c,O as d,h as e,w as f,q as g,oe as h,se as i,ie as j,ue as k};
2
- //# sourceMappingURL=chunk-WDXBCCBB.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/ledger.canister.ts", "../../candid/ledger.certified.idl.js", "../../candid/ledger.idl.js", "../../src/canisters/ledger/ledger.request.converts.ts", "../../src/errors/ledger.errors.ts"],
4
- "sourcesContent": ["import type { ActorSubclass, Agent } from \"@dfinity/agent\";\nimport type { Principal } from \"@dfinity/principal\";\nimport { createServices } from \"@dfinity/utils\";\nimport type { _SERVICE as LedgerService } from \"../candid/ledger\";\nimport { idlFactory as certifiedIdlFactory } from \"../candid/ledger.certified.idl\";\nimport { idlFactory } from \"../candid/ledger.idl\";\nimport type { AccountIdentifier } from \"./account_identifier\";\nimport {\n subAccountNumbersToSubaccount,\n toICPTs,\n toIcrc1TransferRawRequest,\n toTransferRawRequest,\n} from \"./canisters/ledger/ledger.request.converts\";\nimport { MAINNET_LEDGER_CANISTER_ID } from \"./constants/canister_ids\";\nimport { TRANSACTION_FEE } from \"./constants/constants\";\nimport {\n mapIcrc1TransferError,\n mapTransferError,\n mapTransferProtoError,\n} from \"./errors/ledger.errors\";\nimport type { BlockHeight } from \"./types/common\";\nimport type {\n LedgerCanisterCall,\n LedgerCanisterOptions,\n} from \"./types/ledger.options\";\nimport type {\n Icrc1TransferRequest,\n TransferRequest,\n} from \"./types/ledger_converters\";\nimport { importNnsProto, queryCall, updateCall } from \"./utils/proto.utils\";\n\nexport class LedgerCanister {\n private constructor(\n private readonly agent: Agent,\n private readonly canisterId: Principal,\n private readonly service: ActorSubclass<LedgerService>,\n private readonly certifiedService: ActorSubclass<LedgerService>,\n private readonly updateFetcher: LedgerCanisterCall,\n private readonly queryFetcher: LedgerCanisterCall,\n private readonly hardwareWallet: boolean = false,\n ) {}\n\n public static create(options: LedgerCanisterOptions = {}) {\n const canisterId: Principal =\n options.canisterId ?? MAINNET_LEDGER_CANISTER_ID;\n\n const { service, certifiedService, agent } = createServices<LedgerService>({\n options: {\n ...options,\n canisterId,\n },\n idlFactory,\n certifiedIdlFactory,\n });\n\n return new LedgerCanister(\n agent,\n canisterId,\n service,\n certifiedService,\n options.updateCallOverride ?? updateCall,\n options.queryCallOverride ?? queryCall,\n options.hardwareWallet,\n );\n }\n\n /**\n * Returns the balance of the specified account identifier.\n *\n * If `certified` is true, the request is fetched as an update call, otherwise\n * it is fetched using a query call.\n *\n * @throws {@link Error}\n */\n public accountBalance = async ({\n accountIdentifier,\n certified = true,\n }: {\n accountIdentifier: AccountIdentifier;\n certified?: boolean;\n }): Promise<bigint> => {\n if (this.hardwareWallet) {\n return this.accountBalanceHardwareWallet({\n accountIdentifier,\n certified,\n });\n }\n const service = certified ? this.certifiedService : this.service;\n const tokens = await service.account_balance({\n account: accountIdentifier.toUint8Array(),\n });\n return tokens.e8s;\n };\n\n /**\n * Returns the transaction fee of the ledger canister\n * @returns {BigInt}\n */\n public transactionFee = async () => {\n const {\n transfer_fee: { e8s },\n } = await this.service.transfer_fee({});\n return e8s;\n };\n\n /**\n * Transfer ICP from the caller to the destination `accountIdentifier`.\n * Returns the index of the block containing the tx if it was successful.\n *\n * @throws {@link TransferError}\n */\n public transfer = async (request: TransferRequest): Promise<BlockHeight> => {\n if (this.hardwareWallet) {\n return this.transferHardwareWallet(request);\n }\n // When candid is implemented, the previous lines will go away.\n // But the transaction fee method is not supported by Ledger App yet.\n if (request.fee === undefined) {\n request.fee = this.hardwareWallet\n ? TRANSACTION_FEE\n : await this.transactionFee();\n }\n const rawRequest = toTransferRawRequest(request);\n const response = await this.certifiedService.transfer(rawRequest);\n if (\"Err\" in response) {\n throw mapTransferError(response.Err);\n }\n return response.Ok;\n };\n\n // WARNING: When using the ICRC-1 interface of the ICP ledger, there is no\n // relationship between the memo and the icrc1Memo of a transaction. The\n // ICRC-1 interface simply cannot set the memo field and the non-ICRC-1\n // interface cannot set the icrc1Memo field, even though the icrc1Memo field\n // is called just \"memo\" in canister method params.\n /**\n * Transfer ICP from the caller to the destination `Account`.\n * Returns the index of the block containing the tx if it was successful.\n *\n * @throws {@link TransferError}\n */\n public icrc1Transfer = async (\n request: Icrc1TransferRequest,\n ): Promise<BlockHeight> => {\n // The transaction fee method is not supported by Ledger App yet.\n if (request.fee === undefined) {\n request.fee = this.hardwareWallet\n ? TRANSACTION_FEE\n : await this.transactionFee();\n }\n const rawRequest = toIcrc1TransferRawRequest(request);\n const response = await this.certifiedService.icrc1_transfer(rawRequest);\n if (\"Err\" in response) {\n throw mapIcrc1TransferError(response.Err);\n }\n return response.Ok;\n };\n\n private accountBalanceHardwareWallet = async ({\n accountIdentifier,\n certified = true,\n }: {\n accountIdentifier: AccountIdentifier;\n certified?: boolean;\n }): Promise<bigint> => {\n const callMethod = certified ? this.updateFetcher : this.queryFetcher;\n\n const { AccountBalanceRequest: AccountBalanceRequestConstructor, ICPTs } =\n await importNnsProto();\n\n const request = new AccountBalanceRequestConstructor();\n request.setAccount(await accountIdentifier.toProto());\n\n const responseBytes = await callMethod({\n agent: this.agent,\n canisterId: this.canisterId,\n methodName: \"account_balance_pb\",\n arg: request.serializeBinary(),\n });\n\n return BigInt(\n ICPTs.deserializeBinary(new Uint8Array(responseBytes)).getE8s(),\n );\n };\n\n private transferHardwareWallet = async ({\n to,\n amount,\n memo,\n fee,\n fromSubAccount,\n createdAt,\n }: TransferRequest): Promise<BlockHeight> => {\n const { SendRequest, Payment, Memo, TimeStamp, BlockHeight } =\n await importNnsProto();\n\n const request = new SendRequest();\n request.setTo(await to.toProto());\n\n const payment = new Payment();\n payment.setReceiverGets(await toICPTs(amount));\n request.setPayment(payment);\n\n request.setMaxFee(await toICPTs(fee ?? TRANSACTION_FEE));\n\n // Always explicitly set the memo for compatibility with ledger wallet - hardware wallet\n const requestMemo = new Memo();\n requestMemo.setMemo((memo ?? BigInt(0)).toString());\n request.setMemo(requestMemo);\n\n if (createdAt !== undefined) {\n const timestamp = new TimeStamp();\n timestamp.setTimestampNanos(createdAt.toString());\n request.setCreatedAtTime(timestamp);\n }\n\n if (fromSubAccount !== undefined) {\n request.setFromSubaccount(\n await subAccountNumbersToSubaccount(fromSubAccount),\n );\n }\n\n try {\n const responseBytes = await this.updateFetcher({\n agent: this.agent,\n canisterId: this.canisterId,\n methodName: \"send_pb\",\n arg: request.serializeBinary(),\n });\n\n // Successful tx. Return the block height.\n return BigInt(BlockHeight.deserializeBinary(responseBytes).getHeight());\n } catch (err) {\n if (err instanceof Error) {\n throw mapTransferProtoError(err);\n }\n\n throw err;\n }\n };\n}\n", "/* Do not edit. Compiled with ./scripts/compile-idl-js from packages/nns/candid/ledger.did */\nexport const idlFactory = ({ IDL }) => {\n const SubAccount = IDL.Vec(IDL.Nat8);\n const Account = IDL.Record({\n 'owner' : IDL.Principal,\n 'subaccount' : IDL.Opt(SubAccount),\n });\n const UpgradeArgs = IDL.Record({\n 'maximum_number_of_accounts' : IDL.Opt(IDL.Nat64),\n 'icrc1_minting_account' : IDL.Opt(Account),\n });\n const Tokens = IDL.Record({ 'e8s' : IDL.Nat64 });\n const TextAccountIdentifier = IDL.Text;\n const Duration = IDL.Record({ 'secs' : IDL.Nat64, 'nanos' : IDL.Nat32 });\n const ArchiveOptions = IDL.Record({\n 'num_blocks_to_archive' : IDL.Nat64,\n 'trigger_threshold' : IDL.Nat64,\n 'max_message_size_bytes' : IDL.Opt(IDL.Nat64),\n 'cycles_for_archive_creation' : IDL.Opt(IDL.Nat64),\n 'node_max_memory_size_bytes' : IDL.Opt(IDL.Nat64),\n 'controller_id' : IDL.Principal,\n });\n const InitArgs = IDL.Record({\n 'send_whitelist' : IDL.Vec(IDL.Principal),\n 'token_symbol' : IDL.Opt(IDL.Text),\n 'transfer_fee' : IDL.Opt(Tokens),\n 'minting_account' : TextAccountIdentifier,\n 'transaction_window' : IDL.Opt(Duration),\n 'max_message_size_bytes' : IDL.Opt(IDL.Nat64),\n 'icrc1_minting_account' : IDL.Opt(Account),\n 'archive_options' : IDL.Opt(ArchiveOptions),\n 'initial_values' : IDL.Vec(IDL.Tuple(TextAccountIdentifier, Tokens)),\n 'token_name' : IDL.Opt(IDL.Text),\n });\n const LedgerCanisterPayload = IDL.Variant({\n 'Upgrade' : IDL.Opt(UpgradeArgs),\n 'Init' : InitArgs,\n });\n const BlockIndex = IDL.Nat64;\n const GetBlocksArgs = IDL.Record({\n 'start' : BlockIndex,\n 'length' : IDL.Nat64,\n });\n const Memo = IDL.Nat64;\n const AccountIdentifier = IDL.Vec(IDL.Nat8);\n const TimeStamp = IDL.Record({ 'timestamp_nanos' : IDL.Nat64 });\n const Operation = IDL.Variant({\n 'Approve' : IDL.Record({\n 'fee' : Tokens,\n 'from' : AccountIdentifier,\n 'allowance_e8s' : IDL.Int,\n 'expires_at' : IDL.Opt(TimeStamp),\n 'spender' : AccountIdentifier,\n }),\n 'Burn' : IDL.Record({ 'from' : AccountIdentifier, 'amount' : Tokens }),\n 'Mint' : IDL.Record({ 'to' : AccountIdentifier, 'amount' : Tokens }),\n 'Transfer' : IDL.Record({\n 'to' : AccountIdentifier,\n 'fee' : Tokens,\n 'from' : AccountIdentifier,\n 'amount' : Tokens,\n }),\n 'TransferFrom' : IDL.Record({\n 'to' : AccountIdentifier,\n 'fee' : Tokens,\n 'from' : AccountIdentifier,\n 'amount' : Tokens,\n 'spender' : AccountIdentifier,\n }),\n });\n const Transaction = IDL.Record({\n 'memo' : Memo,\n 'icrc1_memo' : IDL.Opt(IDL.Vec(IDL.Nat8)),\n 'operation' : IDL.Opt(Operation),\n 'created_at_time' : TimeStamp,\n });\n const Block = IDL.Record({\n 'transaction' : Transaction,\n 'timestamp' : TimeStamp,\n 'parent_hash' : IDL.Opt(IDL.Vec(IDL.Nat8)),\n });\n const BlockRange = IDL.Record({ 'blocks' : IDL.Vec(Block) });\n const QueryArchiveError = IDL.Variant({\n 'BadFirstBlockIndex' : IDL.Record({\n 'requested_index' : BlockIndex,\n 'first_valid_index' : BlockIndex,\n }),\n 'Other' : IDL.Record({\n 'error_message' : IDL.Text,\n 'error_code' : IDL.Nat64,\n }),\n });\n const QueryArchiveResult = IDL.Variant({\n 'Ok' : BlockRange,\n 'Err' : QueryArchiveError,\n });\n const QueryArchiveFn = IDL.Func([GetBlocksArgs], [QueryArchiveResult], []);\n const QueryBlocksResponse = IDL.Record({\n 'certificate' : IDL.Opt(IDL.Vec(IDL.Nat8)),\n 'blocks' : IDL.Vec(Block),\n 'chain_length' : IDL.Nat64,\n 'first_block_index' : BlockIndex,\n 'archived_blocks' : IDL.Vec(\n IDL.Record({\n 'callback' : QueryArchiveFn,\n 'start' : BlockIndex,\n 'length' : IDL.Nat64,\n })\n ),\n });\n const AccountBalanceArgs = IDL.Record({ 'account' : AccountIdentifier });\n const AccountBalanceArgsDfx = IDL.Record({\n 'account' : TextAccountIdentifier,\n });\n const Archive = IDL.Record({ 'canister_id' : IDL.Principal });\n const Archives = IDL.Record({ 'archives' : IDL.Vec(Archive) });\n const Icrc1Tokens = IDL.Nat;\n const Value = IDL.Variant({\n 'Int' : IDL.Int,\n 'Nat' : IDL.Nat,\n 'Blob' : IDL.Vec(IDL.Nat8),\n 'Text' : IDL.Text,\n });\n const Icrc1Timestamp = IDL.Nat64;\n const TransferArg = IDL.Record({\n 'to' : Account,\n 'fee' : IDL.Opt(Icrc1Tokens),\n 'memo' : IDL.Opt(IDL.Vec(IDL.Nat8)),\n 'from_subaccount' : IDL.Opt(SubAccount),\n 'created_at_time' : IDL.Opt(Icrc1Timestamp),\n 'amount' : Icrc1Tokens,\n });\n const Icrc1BlockIndex = IDL.Nat;\n const Icrc1TransferError = IDL.Variant({\n 'GenericError' : IDL.Record({\n 'message' : IDL.Text,\n 'error_code' : IDL.Nat,\n }),\n 'TemporarilyUnavailable' : IDL.Null,\n 'BadBurn' : IDL.Record({ 'min_burn_amount' : Icrc1Tokens }),\n 'Duplicate' : IDL.Record({ 'duplicate_of' : Icrc1BlockIndex }),\n 'BadFee' : IDL.Record({ 'expected_fee' : Icrc1Tokens }),\n 'CreatedInFuture' : IDL.Record({ 'ledger_time' : IDL.Nat64 }),\n 'TooOld' : IDL.Null,\n 'InsufficientFunds' : IDL.Record({ 'balance' : Icrc1Tokens }),\n });\n const Icrc1TransferResult = IDL.Variant({\n 'Ok' : Icrc1BlockIndex,\n 'Err' : Icrc1TransferError,\n });\n const SendArgs = IDL.Record({\n 'to' : TextAccountIdentifier,\n 'fee' : Tokens,\n 'memo' : Memo,\n 'from_subaccount' : IDL.Opt(SubAccount),\n 'created_at_time' : IDL.Opt(TimeStamp),\n 'amount' : Tokens,\n });\n const TransferArgs = IDL.Record({\n 'to' : AccountIdentifier,\n 'fee' : Tokens,\n 'memo' : Memo,\n 'from_subaccount' : IDL.Opt(SubAccount),\n 'created_at_time' : IDL.Opt(TimeStamp),\n 'amount' : Tokens,\n });\n const TransferError = IDL.Variant({\n 'TxTooOld' : IDL.Record({ 'allowed_window_nanos' : IDL.Nat64 }),\n 'BadFee' : IDL.Record({ 'expected_fee' : Tokens }),\n 'TxDuplicate' : IDL.Record({ 'duplicate_of' : BlockIndex }),\n 'TxCreatedInFuture' : IDL.Null,\n 'InsufficientFunds' : IDL.Record({ 'balance' : Tokens }),\n });\n const TransferResult = IDL.Variant({\n 'Ok' : BlockIndex,\n 'Err' : TransferError,\n });\n const TransferFeeArg = IDL.Record({});\n const TransferFee = IDL.Record({ 'transfer_fee' : Tokens });\n return IDL.Service({\n '_blocks' : IDL.Func([GetBlocksArgs], [QueryBlocksResponse], []),\n 'account_balance' : IDL.Func([AccountBalanceArgs], [Tokens], []),\n 'account_balance_dfx' : IDL.Func([AccountBalanceArgsDfx], [Tokens], []),\n 'archives' : IDL.Func([], [Archives], []),\n 'decimals' : IDL.Func([], [IDL.Record({ 'decimals' : IDL.Nat32 })], []),\n 'icrc1_balance_of' : IDL.Func([Account], [Icrc1Tokens], []),\n 'icrc1_decimals' : IDL.Func([], [IDL.Nat8], []),\n 'icrc1_fee' : IDL.Func([], [Icrc1Tokens], []),\n 'icrc1_metadata' : IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, Value))], []),\n 'icrc1_minting_account' : IDL.Func([], [IDL.Opt(Account)], []),\n 'icrc1_name' : IDL.Func([], [IDL.Text], []),\n 'icrc1_supported_standards' : IDL.Func(\n [],\n [IDL.Vec(IDL.Record({ 'url' : IDL.Text, 'name' : IDL.Text }))],\n [],\n ),\n 'icrc1_symbol' : IDL.Func([], [IDL.Text], []),\n 'icrc1_total_supply' : IDL.Func([], [Icrc1Tokens], []),\n 'icrc1_transfer' : IDL.Func([TransferArg], [Icrc1TransferResult], []),\n 'name' : IDL.Func([], [IDL.Record({ 'name' : IDL.Text })], []),\n 'send_dfx' : IDL.Func([SendArgs], [BlockIndex], []),\n 'symbol' : IDL.Func([], [IDL.Record({ 'symbol' : IDL.Text })], []),\n 'transfer' : IDL.Func([TransferArgs], [TransferResult], []),\n 'transfer_fee' : IDL.Func([TransferFeeArg], [TransferFee], []),\n });\n};\nexport const init = ({ IDL }) => {\n const SubAccount = IDL.Vec(IDL.Nat8);\n const Account = IDL.Record({\n 'owner' : IDL.Principal,\n 'subaccount' : IDL.Opt(SubAccount),\n });\n const UpgradeArgs = IDL.Record({\n 'maximum_number_of_accounts' : IDL.Opt(IDL.Nat64),\n 'icrc1_minting_account' : IDL.Opt(Account),\n });\n const Tokens = IDL.Record({ 'e8s' : IDL.Nat64 });\n const TextAccountIdentifier = IDL.Text;\n const Duration = IDL.Record({ 'secs' : IDL.Nat64, 'nanos' : IDL.Nat32 });\n const ArchiveOptions = IDL.Record({\n 'num_blocks_to_archive' : IDL.Nat64,\n 'trigger_threshold' : IDL.Nat64,\n 'max_message_size_bytes' : IDL.Opt(IDL.Nat64),\n 'cycles_for_archive_creation' : IDL.Opt(IDL.Nat64),\n 'node_max_memory_size_bytes' : IDL.Opt(IDL.Nat64),\n 'controller_id' : IDL.Principal,\n });\n const InitArgs = IDL.Record({\n 'send_whitelist' : IDL.Vec(IDL.Principal),\n 'token_symbol' : IDL.Opt(IDL.Text),\n 'transfer_fee' : IDL.Opt(Tokens),\n 'minting_account' : TextAccountIdentifier,\n 'transaction_window' : IDL.Opt(Duration),\n 'max_message_size_bytes' : IDL.Opt(IDL.Nat64),\n 'icrc1_minting_account' : IDL.Opt(Account),\n 'archive_options' : IDL.Opt(ArchiveOptions),\n 'initial_values' : IDL.Vec(IDL.Tuple(TextAccountIdentifier, Tokens)),\n 'token_name' : IDL.Opt(IDL.Text),\n });\n const LedgerCanisterPayload = IDL.Variant({\n 'Upgrade' : IDL.Opt(UpgradeArgs),\n 'Init' : InitArgs,\n });\n return [LedgerCanisterPayload];\n};\n", "/* Do not edit. Compiled with ./scripts/compile-idl-js from packages/nns/candid/ledger.did */\nexport const idlFactory = ({ IDL }) => {\n const SubAccount = IDL.Vec(IDL.Nat8);\n const Account = IDL.Record({\n 'owner' : IDL.Principal,\n 'subaccount' : IDL.Opt(SubAccount),\n });\n const UpgradeArgs = IDL.Record({\n 'maximum_number_of_accounts' : IDL.Opt(IDL.Nat64),\n 'icrc1_minting_account' : IDL.Opt(Account),\n });\n const Tokens = IDL.Record({ 'e8s' : IDL.Nat64 });\n const TextAccountIdentifier = IDL.Text;\n const Duration = IDL.Record({ 'secs' : IDL.Nat64, 'nanos' : IDL.Nat32 });\n const ArchiveOptions = IDL.Record({\n 'num_blocks_to_archive' : IDL.Nat64,\n 'trigger_threshold' : IDL.Nat64,\n 'max_message_size_bytes' : IDL.Opt(IDL.Nat64),\n 'cycles_for_archive_creation' : IDL.Opt(IDL.Nat64),\n 'node_max_memory_size_bytes' : IDL.Opt(IDL.Nat64),\n 'controller_id' : IDL.Principal,\n });\n const InitArgs = IDL.Record({\n 'send_whitelist' : IDL.Vec(IDL.Principal),\n 'token_symbol' : IDL.Opt(IDL.Text),\n 'transfer_fee' : IDL.Opt(Tokens),\n 'minting_account' : TextAccountIdentifier,\n 'transaction_window' : IDL.Opt(Duration),\n 'max_message_size_bytes' : IDL.Opt(IDL.Nat64),\n 'icrc1_minting_account' : IDL.Opt(Account),\n 'archive_options' : IDL.Opt(ArchiveOptions),\n 'initial_values' : IDL.Vec(IDL.Tuple(TextAccountIdentifier, Tokens)),\n 'token_name' : IDL.Opt(IDL.Text),\n });\n const LedgerCanisterPayload = IDL.Variant({\n 'Upgrade' : IDL.Opt(UpgradeArgs),\n 'Init' : InitArgs,\n });\n const AccountIdentifier = IDL.Vec(IDL.Nat8);\n const AccountBalanceArgs = IDL.Record({ 'account' : AccountIdentifier });\n const AccountBalanceArgsDfx = IDL.Record({\n 'account' : TextAccountIdentifier,\n });\n const Archive = IDL.Record({ 'canister_id' : IDL.Principal });\n const Archives = IDL.Record({ 'archives' : IDL.Vec(Archive) });\n const Icrc1Tokens = IDL.Nat;\n const Value = IDL.Variant({\n 'Int' : IDL.Int,\n 'Nat' : IDL.Nat,\n 'Blob' : IDL.Vec(IDL.Nat8),\n 'Text' : IDL.Text,\n });\n const Icrc1Timestamp = IDL.Nat64;\n const TransferArg = IDL.Record({\n 'to' : Account,\n 'fee' : IDL.Opt(Icrc1Tokens),\n 'memo' : IDL.Opt(IDL.Vec(IDL.Nat8)),\n 'from_subaccount' : IDL.Opt(SubAccount),\n 'created_at_time' : IDL.Opt(Icrc1Timestamp),\n 'amount' : Icrc1Tokens,\n });\n const Icrc1BlockIndex = IDL.Nat;\n const Icrc1TransferError = IDL.Variant({\n 'GenericError' : IDL.Record({\n 'message' : IDL.Text,\n 'error_code' : IDL.Nat,\n }),\n 'TemporarilyUnavailable' : IDL.Null,\n 'BadBurn' : IDL.Record({ 'min_burn_amount' : Icrc1Tokens }),\n 'Duplicate' : IDL.Record({ 'duplicate_of' : Icrc1BlockIndex }),\n 'BadFee' : IDL.Record({ 'expected_fee' : Icrc1Tokens }),\n 'CreatedInFuture' : IDL.Record({ 'ledger_time' : IDL.Nat64 }),\n 'TooOld' : IDL.Null,\n 'InsufficientFunds' : IDL.Record({ 'balance' : Icrc1Tokens }),\n });\n const Icrc1TransferResult = IDL.Variant({\n 'Ok' : Icrc1BlockIndex,\n 'Err' : Icrc1TransferError,\n });\n const BlockIndex = IDL.Nat64;\n const GetBlocksArgs = IDL.Record({\n 'start' : BlockIndex,\n 'length' : IDL.Nat64,\n });\n const Memo = IDL.Nat64;\n const TimeStamp = IDL.Record({ 'timestamp_nanos' : IDL.Nat64 });\n const Operation = IDL.Variant({\n 'Approve' : IDL.Record({\n 'fee' : Tokens,\n 'from' : AccountIdentifier,\n 'allowance_e8s' : IDL.Int,\n 'expires_at' : IDL.Opt(TimeStamp),\n 'spender' : AccountIdentifier,\n }),\n 'Burn' : IDL.Record({ 'from' : AccountIdentifier, 'amount' : Tokens }),\n 'Mint' : IDL.Record({ 'to' : AccountIdentifier, 'amount' : Tokens }),\n 'Transfer' : IDL.Record({\n 'to' : AccountIdentifier,\n 'fee' : Tokens,\n 'from' : AccountIdentifier,\n 'amount' : Tokens,\n }),\n 'TransferFrom' : IDL.Record({\n 'to' : AccountIdentifier,\n 'fee' : Tokens,\n 'from' : AccountIdentifier,\n 'amount' : Tokens,\n 'spender' : AccountIdentifier,\n }),\n });\n const Transaction = IDL.Record({\n 'memo' : Memo,\n 'icrc1_memo' : IDL.Opt(IDL.Vec(IDL.Nat8)),\n 'operation' : IDL.Opt(Operation),\n 'created_at_time' : TimeStamp,\n });\n const Block = IDL.Record({\n 'transaction' : Transaction,\n 'timestamp' : TimeStamp,\n 'parent_hash' : IDL.Opt(IDL.Vec(IDL.Nat8)),\n });\n const BlockRange = IDL.Record({ 'blocks' : IDL.Vec(Block) });\n const QueryArchiveError = IDL.Variant({\n 'BadFirstBlockIndex' : IDL.Record({\n 'requested_index' : BlockIndex,\n 'first_valid_index' : BlockIndex,\n }),\n 'Other' : IDL.Record({\n 'error_message' : IDL.Text,\n 'error_code' : IDL.Nat64,\n }),\n });\n const QueryArchiveResult = IDL.Variant({\n 'Ok' : BlockRange,\n 'Err' : QueryArchiveError,\n });\n const QueryArchiveFn = IDL.Func(\n [GetBlocksArgs],\n [QueryArchiveResult],\n ['query'],\n );\n const QueryBlocksResponse = IDL.Record({\n 'certificate' : IDL.Opt(IDL.Vec(IDL.Nat8)),\n 'blocks' : IDL.Vec(Block),\n 'chain_length' : IDL.Nat64,\n 'first_block_index' : BlockIndex,\n 'archived_blocks' : IDL.Vec(\n IDL.Record({\n 'callback' : QueryArchiveFn,\n 'start' : BlockIndex,\n 'length' : IDL.Nat64,\n })\n ),\n });\n const SendArgs = IDL.Record({\n 'to' : TextAccountIdentifier,\n 'fee' : Tokens,\n 'memo' : Memo,\n 'from_subaccount' : IDL.Opt(SubAccount),\n 'created_at_time' : IDL.Opt(TimeStamp),\n 'amount' : Tokens,\n });\n const TransferArgs = IDL.Record({\n 'to' : AccountIdentifier,\n 'fee' : Tokens,\n 'memo' : Memo,\n 'from_subaccount' : IDL.Opt(SubAccount),\n 'created_at_time' : IDL.Opt(TimeStamp),\n 'amount' : Tokens,\n });\n const TransferError = IDL.Variant({\n 'TxTooOld' : IDL.Record({ 'allowed_window_nanos' : IDL.Nat64 }),\n 'BadFee' : IDL.Record({ 'expected_fee' : Tokens }),\n 'TxDuplicate' : IDL.Record({ 'duplicate_of' : BlockIndex }),\n 'TxCreatedInFuture' : IDL.Null,\n 'InsufficientFunds' : IDL.Record({ 'balance' : Tokens }),\n });\n const TransferResult = IDL.Variant({\n 'Ok' : BlockIndex,\n 'Err' : TransferError,\n });\n const TransferFeeArg = IDL.Record({});\n const TransferFee = IDL.Record({ 'transfer_fee' : Tokens });\n return IDL.Service({\n 'account_balance' : IDL.Func([AccountBalanceArgs], [Tokens], ['query']),\n 'account_balance_dfx' : IDL.Func(\n [AccountBalanceArgsDfx],\n [Tokens],\n ['query'],\n ),\n 'archives' : IDL.Func([], [Archives], ['query']),\n 'decimals' : IDL.Func(\n [],\n [IDL.Record({ 'decimals' : IDL.Nat32 })],\n ['query'],\n ),\n 'icrc1_balance_of' : IDL.Func([Account], [Icrc1Tokens], ['query']),\n 'icrc1_decimals' : IDL.Func([], [IDL.Nat8], ['query']),\n 'icrc1_fee' : IDL.Func([], [Icrc1Tokens], ['query']),\n 'icrc1_metadata' : IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, Value))],\n ['query'],\n ),\n 'icrc1_minting_account' : IDL.Func([], [IDL.Opt(Account)], ['query']),\n 'icrc1_name' : IDL.Func([], [IDL.Text], ['query']),\n 'icrc1_supported_standards' : IDL.Func(\n [],\n [IDL.Vec(IDL.Record({ 'url' : IDL.Text, 'name' : IDL.Text }))],\n ['query'],\n ),\n 'icrc1_symbol' : IDL.Func([], [IDL.Text], ['query']),\n 'icrc1_total_supply' : IDL.Func([], [Icrc1Tokens], ['query']),\n 'icrc1_transfer' : IDL.Func([TransferArg], [Icrc1TransferResult], []),\n 'name' : IDL.Func([], [IDL.Record({ 'name' : IDL.Text })], ['query']),\n 'query_blocks' : IDL.Func(\n [GetBlocksArgs],\n [QueryBlocksResponse],\n ['query'],\n ),\n 'send_dfx' : IDL.Func([SendArgs], [BlockIndex], []),\n 'symbol' : IDL.Func([], [IDL.Record({ 'symbol' : IDL.Text })], ['query']),\n 'transfer' : IDL.Func([TransferArgs], [TransferResult], []),\n 'transfer_fee' : IDL.Func([TransferFeeArg], [TransferFee], ['query']),\n });\n};\nexport const init = ({ IDL }) => {\n const SubAccount = IDL.Vec(IDL.Nat8);\n const Account = IDL.Record({\n 'owner' : IDL.Principal,\n 'subaccount' : IDL.Opt(SubAccount),\n });\n const UpgradeArgs = IDL.Record({\n 'maximum_number_of_accounts' : IDL.Opt(IDL.Nat64),\n 'icrc1_minting_account' : IDL.Opt(Account),\n });\n const Tokens = IDL.Record({ 'e8s' : IDL.Nat64 });\n const TextAccountIdentifier = IDL.Text;\n const Duration = IDL.Record({ 'secs' : IDL.Nat64, 'nanos' : IDL.Nat32 });\n const ArchiveOptions = IDL.Record({\n 'num_blocks_to_archive' : IDL.Nat64,\n 'trigger_threshold' : IDL.Nat64,\n 'max_message_size_bytes' : IDL.Opt(IDL.Nat64),\n 'cycles_for_archive_creation' : IDL.Opt(IDL.Nat64),\n 'node_max_memory_size_bytes' : IDL.Opt(IDL.Nat64),\n 'controller_id' : IDL.Principal,\n });\n const InitArgs = IDL.Record({\n 'send_whitelist' : IDL.Vec(IDL.Principal),\n 'token_symbol' : IDL.Opt(IDL.Text),\n 'transfer_fee' : IDL.Opt(Tokens),\n 'minting_account' : TextAccountIdentifier,\n 'transaction_window' : IDL.Opt(Duration),\n 'max_message_size_bytes' : IDL.Opt(IDL.Nat64),\n 'icrc1_minting_account' : IDL.Opt(Account),\n 'archive_options' : IDL.Opt(ArchiveOptions),\n 'initial_values' : IDL.Vec(IDL.Tuple(TextAccountIdentifier, Tokens)),\n 'token_name' : IDL.Opt(IDL.Text),\n });\n const LedgerCanisterPayload = IDL.Variant({\n 'Upgrade' : IDL.Opt(UpgradeArgs),\n 'Init' : InitArgs,\n });\n return [LedgerCanisterPayload];\n};\n", "import type { ICPTs, Subaccount } from \"@dfinity/nns-proto\";\nimport { arrayOfNumberToUint8Array, toNullable } from \"@dfinity/utils\";\nimport type {\n TransferArg as Icrc1TransferRawRequest,\n Tokens,\n TransferArgs as TransferRawRequest,\n} from \"../../../candid/ledger\";\nimport { TRANSACTION_FEE } from \"../../constants/constants\";\nimport type {\n Icrc1TransferRequest,\n TransferRequest,\n} from \"../../types/ledger_converters\";\nimport { importNnsProto } from \"../../utils/proto.utils\";\n\nexport const subAccountNumbersToSubaccount = async (\n subAccountNumbers: number[],\n): Promise<Subaccount> => {\n const bytes = new Uint8Array(subAccountNumbers).buffer;\n const { Subaccount: SubaccountConstructor } = await importNnsProto();\n const subaccount: Subaccount = new SubaccountConstructor();\n subaccount.setSubAccount(new Uint8Array(bytes));\n return subaccount;\n};\n\nexport const toICPTs = async (amount: bigint): Promise<ICPTs> => {\n const { ICPTs: ICPTsConstructor } = await importNnsProto();\n const result = new ICPTsConstructor();\n result.setE8s(amount.toString(10));\n return result;\n};\n\nconst e8sToTokens = (e8s: bigint): Tokens => ({ e8s });\n\nexport const toTransferRawRequest = ({\n to,\n amount,\n memo,\n fee,\n fromSubAccount,\n createdAt,\n}: TransferRequest): TransferRawRequest => ({\n to: to.toUint8Array(),\n fee: e8sToTokens(fee ?? TRANSACTION_FEE),\n amount: e8sToTokens(amount),\n // Always explicitly set the memo for compatibility with ledger wallet - hardware wallet\n memo: memo ?? BigInt(0),\n created_at_time:\n createdAt !== undefined ? [{ timestamp_nanos: createdAt }] : [],\n from_subaccount:\n fromSubAccount === undefined\n ? []\n : [arrayOfNumberToUint8Array(fromSubAccount)],\n});\n\n// WARNING: When using the ICRC-1 interface of the ICP ledger, there is no\n// relationship between the memo and the icrc1Memo of a transaction. The ICRC-1\n// interface simply cannot set the memo field and the non-ICRC-1 interface\n// cannot set the icrc1Memo field, even though the icrc1Memo field is called\n// just \"memo\" in canister method params.\nexport const toIcrc1TransferRawRequest = ({\n fromSubAccount,\n to,\n amount,\n fee,\n icrc1Memo,\n createdAt,\n}: Icrc1TransferRequest): Icrc1TransferRawRequest => ({\n to,\n fee: toNullable(fee ?? TRANSACTION_FEE),\n amount,\n memo: toNullable(icrc1Memo),\n created_at_time: toNullable(createdAt),\n from_subaccount: toNullable(fromSubAccount),\n});\n", "import { convertStringToE8s } from \"@dfinity/utils\";\nimport type {\n Icrc1TransferError as RawIcrc1TransferError,\n TransferError as RawTransferError,\n} from \"../../candid/ledger\";\nimport type { BlockHeight } from \"../types/common\";\n\nexport class TransferError extends Error {}\n\nexport class InvalidSenderError extends TransferError {}\n\nexport class InsufficientFundsError extends TransferError {\n constructor(public readonly balance: bigint) {\n super();\n }\n}\n\nexport class TxTooOldError extends TransferError {\n constructor(public readonly allowed_window_secs?: number | undefined) {\n super();\n }\n}\n\nexport class TxCreatedInFutureError extends TransferError {}\n\nexport class TxDuplicateError extends TransferError {\n constructor(public readonly duplicateOf: BlockHeight) {\n super();\n }\n}\n\nexport class BadFeeError extends TransferError {\n constructor(public readonly expectedFee: bigint) {\n super();\n }\n}\n\nexport const mapTransferError = (\n rawTransferError: RawTransferError,\n): TransferError => {\n if (\"TxDuplicate\" in rawTransferError) {\n return new TxDuplicateError(rawTransferError.TxDuplicate.duplicate_of);\n }\n if (\"InsufficientFunds\" in rawTransferError) {\n return new InsufficientFundsError(\n rawTransferError.InsufficientFunds.balance.e8s,\n );\n }\n if (\"TxCreatedInFuture\" in rawTransferError) {\n return new TxCreatedInFutureError();\n }\n if (\"TxTooOld\" in rawTransferError) {\n return new TxTooOldError(\n Number(rawTransferError.TxTooOld.allowed_window_nanos),\n );\n }\n if (\"BadFee\" in rawTransferError) {\n return new BadFeeError(rawTransferError.BadFee.expected_fee.e8s);\n }\n // Edge case\n return new TransferError(\n `Unknown error type ${JSON.stringify(rawTransferError)}`,\n );\n};\n\nexport const mapIcrc1TransferError = (\n rawTransferError: RawIcrc1TransferError,\n): TransferError => {\n if (\"Duplicate\" in rawTransferError) {\n return new TxDuplicateError(rawTransferError.Duplicate.duplicate_of);\n }\n if (\"InsufficientFunds\" in rawTransferError) {\n return new InsufficientFundsError(\n rawTransferError.InsufficientFunds.balance,\n );\n }\n if (\"CreatedInFuture\" in rawTransferError) {\n return new TxCreatedInFutureError();\n }\n if (\"TooOld\" in rawTransferError) {\n return new TxTooOldError();\n }\n if (\"BadFee\" in rawTransferError) {\n return new BadFeeError(rawTransferError.BadFee.expected_fee);\n }\n // Edge case\n return new TransferError(\n `Unknown error type ${JSON.stringify(rawTransferError)}`,\n );\n};\n\nexport const mapTransferProtoError = (responseBytes: Error): TransferError => {\n const { message } = responseBytes;\n\n if (message.includes(\"Reject code: 5\")) {\n // Match against the different error types.\n // This string matching is fragile. It's a stop-gap solution until\n // we migrate to the candid interface.\n\n if (message.match(/Sending from (.*) is not allowed/)) {\n return new InvalidSenderError();\n }\n\n {\n const m = message.match(/transaction.*duplicate.* in block (\\d+)/);\n if (m && m.length > 1) {\n return new TxDuplicateError(BigInt(m[1]));\n }\n }\n\n {\n const m = message.match(\n /debit account.*, current balance: (\\d*(\\.\\d*)?)/,\n );\n if (m && m.length > 1) {\n const balance = convertStringToE8s(m[1]);\n if (typeof balance === \"bigint\") {\n return new InsufficientFundsError(balance);\n }\n }\n }\n\n if (message.includes(\"is in future\")) {\n return new TxCreatedInFutureError();\n }\n\n {\n const m = message.match(/older than (\\d+)/);\n if (m && m.length > 1) {\n return new TxTooOldError(Number.parseInt(m[1]));\n }\n }\n }\n\n // Unknown error. Throw as-is.\n throw responseBytes;\n};\n"],
5
- "mappings": "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",
6
- "names": ["createServices", "idlFactory", "IDL", "SubAccount", "Account", "UpgradeArgs", "Tokens", "TextAccountIdentifier", "Duration", "ArchiveOptions", "InitArgs", "LedgerCanisterPayload", "BlockIndex", "GetBlocksArgs", "Memo", "AccountIdentifier", "TimeStamp", "Operation", "Transaction", "Block", "BlockRange", "QueryArchiveError", "QueryArchiveResult", "QueryArchiveFn", "QueryBlocksResponse", "AccountBalanceArgs", "AccountBalanceArgsDfx", "Archive", "Archives", "Icrc1Tokens", "Value", "Icrc1Timestamp", "TransferArg", "Icrc1BlockIndex", "Icrc1TransferError", "Icrc1TransferResult", "SendArgs", "TransferArgs", "TransferError", "TransferResult", "TransferFeeArg", "TransferFee", "idlFactory", "IDL", "SubAccount", "Account", "UpgradeArgs", "Tokens", "TextAccountIdentifier", "Duration", "ArchiveOptions", "InitArgs", "LedgerCanisterPayload", "AccountIdentifier", "AccountBalanceArgs", "AccountBalanceArgsDfx", "Archive", "Archives", "Icrc1Tokens", "Value", "Icrc1Timestamp", "TransferArg", "Icrc1BlockIndex", "Icrc1TransferError", "Icrc1TransferResult", "BlockIndex", "GetBlocksArgs", "Memo", "TimeStamp", "Operation", "Transaction", "Block", "BlockRange", "QueryArchiveError", "QueryArchiveResult", "QueryArchiveFn", "QueryBlocksResponse", "SendArgs", "TransferArgs", "TransferError", "TransferResult", "TransferFeeArg", "TransferFee", "arrayOfNumberToUint8Array", "toNullable", "subAccountNumbersToSubaccount", "subAccountNumbers", "bytes", "SubaccountConstructor", "importNnsProto", "subaccount", "toICPTs", "amount", "ICPTsConstructor", "result", "e8sToTokens", "e8s", "toTransferRawRequest", "to", "memo", "fee", "fromSubAccount", "createdAt", "TRANSACTION_FEE", "arrayOfNumberToUint8Array", "toIcrc1TransferRawRequest", "icrc1Memo", "toNullable", "convertStringToE8s", "TransferError", "InvalidSenderError", "InsufficientFundsError", "balance", "TxTooOldError", "allowed_window_secs", "TxCreatedInFutureError", "TxDuplicateError", "duplicateOf", "BadFeeError", "expectedFee", "mapTransferError", "rawTransferError", "mapIcrc1TransferError", "mapTransferProtoError", "responseBytes", "message", "m", "LedgerCanister", "_LedgerCanister", "agent", "canisterId", "service", "certifiedService", "updateFetcher", "queryFetcher", "hardwareWallet", "accountIdentifier", "certified", "e8s", "request", "TRANSACTION_FEE", "rawRequest", "toTransferRawRequest", "response", "mapTransferError", "toIcrc1TransferRawRequest", "mapIcrc1TransferError", "callMethod", "AccountBalanceRequestConstructor", "ICPTs", "importNnsProto", "responseBytes", "to", "amount", "memo", "fee", "fromSubAccount", "createdAt", "SendRequest", "Payment", "Memo", "TimeStamp", "BlockHeight", "payment", "toICPTs", "requestMemo", "timestamp", "subAccountNumbersToSubaccount", "err", "mapTransferProtoError", "options", "MAINNET_LEDGER_CANISTER_ID", "createServices", "idlFactory", "updateCall", "queryCall"]
7
- }
@@ -1,2 +0,0 @@
1
- import{Principal as a}from"@dfinity/principal";var N=a.fromText("rrkah-fqaaa-aaaaa-aaaaq-cai"),E=a.fromText("rrkah-fqaaa-aaaaa-aaaaq-cai"),o=a.fromText("ryjl3-tyaaa-aaaaa-aaaba-cai"),t=a.fromText("renrk-eyaaa-aaaaa-aaada-cai"),_=a.fromText("r7inp-6aaaa-aaaaa-aaabq-cai");export{E as a,o as b,t as c,_ as d};
2
- //# sourceMappingURL=chunk-ZMUQLPST.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/constants/canister_ids.ts"],
4
- "sourcesContent": ["import { Principal } from \"@dfinity/principal\";\n\nexport const GOVERNANCE_CANISTER_ID = Principal.fromText(\n \"rrkah-fqaaa-aaaaa-aaaaq-cai\",\n);\n\nexport const MAINNET_GOVERNANCE_CANISTER_ID = Principal.fromText(\n \"rrkah-fqaaa-aaaaa-aaaaq-cai\",\n);\n\nexport const MAINNET_LEDGER_CANISTER_ID = Principal.fromText(\n \"ryjl3-tyaaa-aaaaa-aaaba-cai\",\n);\n\nexport const MAINNET_GENESIS_TOKEN_CANISTER_ID = Principal.fromText(\n \"renrk-eyaaa-aaaaa-aaada-cai\",\n);\n\n// TODO(L2-828): Sns-wasm canister is not yet deployed on mainnet\nexport const MAINNET_SNS_WASM_CANISTER_ID = Principal.fromText(\n \"r7inp-6aaaa-aaaaa-aaabq-cai\",\n);\n"],
5
- "mappings": "AAAA,OAAS,aAAAA,MAAiB,qBAEnB,IAAMC,EAAyBD,EAAU,SAC9C,6BACF,EAEaE,EAAiCF,EAAU,SACtD,6BACF,EAEaG,EAA6BH,EAAU,SAClD,6BACF,EAEaI,EAAoCJ,EAAU,SACzD,6BACF,EAGaK,EAA+BL,EAAU,SACpD,6BACF",
6
- "names": ["Principal", "GOVERNANCE_CANISTER_ID", "MAINNET_GOVERNANCE_CANISTER_ID", "MAINNET_LEDGER_CANISTER_ID", "MAINNET_GENESIS_TOKEN_CANISTER_ID", "MAINNET_SNS_WASM_CANISTER_ID"]
7
- }
package/dist/esm/icp.js DELETED
@@ -1,2 +0,0 @@
1
- import{a}from"./chunk-JCUF5KWH.js";import"./chunk-2MZ7K2GY.js";import"./chunk-IS3C7V4B.js";export{a as ICP};
2
- //# sourceMappingURL=icp.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }
@@ -1,2 +0,0 @@
1
- import{k as a}from"./chunk-WDXBCCBB.js";import"./chunk-DGJWOAUC.js";import"./chunk-2MZ7K2GY.js";import"./chunk-ZMUQLPST.js";import"./chunk-IS3C7V4B.js";export{a as LedgerCanister};
2
- //# sourceMappingURL=ledger.canister.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }
@@ -1,29 +0,0 @@
1
- import type { AccountIdentifier as AccountIdentifierPb } from "@dfinity/nns-proto";
2
- import type { Principal } from "@dfinity/principal";
3
- import type { AccountIdentifier as AccountIdentifierCandid } from "../candid/governance";
4
- export declare class AccountIdentifier {
5
- private readonly bytes;
6
- private constructor();
7
- static fromHex(hex: string): AccountIdentifier;
8
- static fromPrincipal({ principal, subAccount, }: {
9
- principal: Principal;
10
- subAccount?: SubAccount;
11
- }): AccountIdentifier;
12
- /**
13
- * @returns An AccountIdentifier protobuf object.
14
- */
15
- toProto(): Promise<AccountIdentifierPb>;
16
- toHex(): string;
17
- toUint8Array(): Uint8Array;
18
- toNumbers(): number[];
19
- toAccountIdentifierHash(): AccountIdentifierCandid;
20
- }
21
- export declare class SubAccount {
22
- private readonly bytes;
23
- private constructor();
24
- static fromBytes(bytes: Uint8Array): SubAccount | Error;
25
- static fromPrincipal(principal: Principal): SubAccount;
26
- static fromID(id: number): SubAccount;
27
- static ZERO: SubAccount;
28
- toUint8Array(): Uint8Array;
29
- }
@@ -1,7 +0,0 @@
1
- import type { ICPTs, Subaccount } from "@dfinity/nns-proto";
2
- import type { TransferArg as Icrc1TransferRawRequest, TransferArgs as TransferRawRequest } from "../../../candid/ledger";
3
- import type { Icrc1TransferRequest, TransferRequest } from "../../types/ledger_converters";
4
- export declare const subAccountNumbersToSubaccount: (subAccountNumbers: number[]) => Promise<Subaccount>;
5
- export declare const toICPTs: (amount: bigint) => Promise<ICPTs>;
6
- export declare const toTransferRawRequest: ({ to, amount, memo, fee, fromSubAccount, createdAt, }: TransferRequest) => TransferRawRequest;
7
- export declare const toIcrc1TransferRawRequest: ({ fromSubAccount, to, amount, fee, icrc1Memo, createdAt, }: Icrc1TransferRequest) => Icrc1TransferRawRequest;
@@ -1,27 +0,0 @@
1
- import type { Icrc1TransferError as RawIcrc1TransferError, TransferError as RawTransferError } from "../../candid/ledger";
2
- import type { BlockHeight } from "../types/common";
3
- export declare class TransferError extends Error {
4
- }
5
- export declare class InvalidSenderError extends TransferError {
6
- }
7
- export declare class InsufficientFundsError extends TransferError {
8
- readonly balance: bigint;
9
- constructor(balance: bigint);
10
- }
11
- export declare class TxTooOldError extends TransferError {
12
- readonly allowed_window_secs?: number | undefined;
13
- constructor(allowed_window_secs?: number | undefined);
14
- }
15
- export declare class TxCreatedInFutureError extends TransferError {
16
- }
17
- export declare class TxDuplicateError extends TransferError {
18
- readonly duplicateOf: BlockHeight;
19
- constructor(duplicateOf: BlockHeight);
20
- }
21
- export declare class BadFeeError extends TransferError {
22
- readonly expectedFee: bigint;
23
- constructor(expectedFee: bigint);
24
- }
25
- export declare const mapTransferError: (rawTransferError: RawTransferError) => TransferError;
26
- export declare const mapIcrc1TransferError: (rawTransferError: RawIcrc1TransferError) => TransferError;
27
- export declare const mapTransferProtoError: (responseBytes: Error) => TransferError;
@@ -1,22 +0,0 @@
1
- import type { ICPTs } from "@dfinity/nns-proto";
2
- import { type FromStringToTokenError, type Token } from "@dfinity/utils";
3
- /**
4
- * We don't extend to keep `fromE8s` and `fromString` as backwards compatible.
5
- * @deprecated
6
- */
7
- export declare class ICP {
8
- private e8s;
9
- token: Token;
10
- private constructor();
11
- static fromE8s(amount: bigint): ICP;
12
- /**
13
- * Initialize from a string. Accepted formats:
14
- *
15
- * 1234567.8901
16
- * 1'234'567.8901
17
- * 1,234,567.8901
18
- */
19
- static fromString(amount: string): ICP | FromStringToTokenError;
20
- toE8s(): bigint;
21
- toProto(): Promise<ICPTs>;
22
- }
@@ -1,48 +0,0 @@
1
- import type { AccountIdentifier } from "./account_identifier";
2
- import type { BlockHeight } from "./types/common";
3
- import type { LedgerCanisterOptions } from "./types/ledger.options";
4
- import type { Icrc1TransferRequest, TransferRequest } from "./types/ledger_converters";
5
- export declare class LedgerCanister {
6
- private readonly agent;
7
- private readonly canisterId;
8
- private readonly service;
9
- private readonly certifiedService;
10
- private readonly updateFetcher;
11
- private readonly queryFetcher;
12
- private readonly hardwareWallet;
13
- private constructor();
14
- static create(options?: LedgerCanisterOptions): LedgerCanister;
15
- /**
16
- * Returns the balance of the specified account identifier.
17
- *
18
- * If `certified` is true, the request is fetched as an update call, otherwise
19
- * it is fetched using a query call.
20
- *
21
- * @throws {@link Error}
22
- */
23
- accountBalance: ({ accountIdentifier, certified, }: {
24
- accountIdentifier: AccountIdentifier;
25
- certified?: boolean | undefined;
26
- }) => Promise<bigint>;
27
- /**
28
- * Returns the transaction fee of the ledger canister
29
- * @returns {BigInt}
30
- */
31
- transactionFee: () => Promise<bigint>;
32
- /**
33
- * Transfer ICP from the caller to the destination `accountIdentifier`.
34
- * Returns the index of the block containing the tx if it was successful.
35
- *
36
- * @throws {@link TransferError}
37
- */
38
- transfer: (request: TransferRequest) => Promise<BlockHeight>;
39
- /**
40
- * Transfer ICP from the caller to the destination `Account`.
41
- * Returns the index of the block containing the tx if it was successful.
42
- *
43
- * @throws {@link TransferError}
44
- */
45
- icrc1Transfer: (request: Icrc1TransferRequest) => Promise<BlockHeight>;
46
- private accountBalanceHardwareWallet;
47
- private transferHardwareWallet;
48
- }
@@ -1,15 +0,0 @@
1
- import type { Agent } from "@dfinity/agent";
2
- import type { Principal } from "@dfinity/principal";
3
- import type { CanisterOptions } from "@dfinity/utils";
4
- import type { _SERVICE as LedgerService } from "../../candid/ledger";
5
- export type LedgerCanisterCall = (params: {
6
- agent: Agent;
7
- canisterId: Principal;
8
- methodName: string;
9
- arg: ArrayBuffer;
10
- }) => Promise<Uint8Array>;
11
- export interface LedgerCanisterOptions extends CanisterOptions<LedgerService> {
12
- updateCallOverride?: LedgerCanisterCall;
13
- queryCallOverride?: LedgerCanisterCall;
14
- hardwareWallet?: boolean;
15
- }
@@ -1,19 +0,0 @@
1
- import type { Account, Icrc1Timestamp, Icrc1Tokens, SubAccount } from "../../candid/ledger";
2
- import type { AccountIdentifier } from "../account_identifier";
3
- import type { E8s } from "./common";
4
- export type TransferRequest = {
5
- to: AccountIdentifier;
6
- amount: bigint;
7
- memo?: bigint;
8
- fee?: E8s;
9
- fromSubAccount?: number[];
10
- createdAt?: bigint;
11
- };
12
- export type Icrc1TransferRequest = {
13
- to: Account;
14
- amount: Icrc1Tokens;
15
- icrc1Memo?: Uint8Array;
16
- fee?: Icrc1Tokens;
17
- fromSubAccount?: SubAccount;
18
- createdAt?: Icrc1Timestamp;
19
- };
@@ -1,5 +0,0 @@
1
- import type { Principal } from "@dfinity/principal";
2
- import type { AccountIdentifier } from "../types/common";
3
- export declare const accountIdentifierToBytes: (accountIdentifier: AccountIdentifier) => Uint8Array;
4
- export declare const accountIdentifierFromBytes: (accountIdentifier: Uint8Array) => AccountIdentifier;
5
- export declare const principalToAccountIdentifier: (principal: Principal, subAccount?: Uint8Array) => string;
@@ -1,6 +0,0 @@
1
- /**
2
- * Checks account id check sum
3
- *
4
- * @throws InvalidAccountIDError
5
- */
6
- export declare const checkAccountId: (accountId: string) => void;