@dfinity/ledger-icp
Version:
A library for interfacing with the ICP ledger on the Internet Computer.
445 lines (444 loc) • 15.7 kB
JavaScript
/* Do not edit. Compiled with ./scripts/compile-idl-js from packages/ledger-icp/candid/ledger.did */
export const idlFactory = ({ IDL }) => {
const SubAccount = IDL.Vec(IDL.Nat8);
const Account = IDL.Record({
'owner' : IDL.Principal,
'subaccount' : IDL.Opt(SubAccount),
});
const FeatureFlags = IDL.Record({ 'icrc2' : IDL.Bool });
const UpgradeArgs = IDL.Record({
'icrc1_minting_account' : IDL.Opt(Account),
'feature_flags' : IDL.Opt(FeatureFlags),
});
const Tokens = IDL.Record({ 'e8s' : IDL.Nat64 });
const TextAccountIdentifier = IDL.Text;
const Duration = IDL.Record({ 'secs' : IDL.Nat64, 'nanos' : IDL.Nat32 });
const ArchiveOptions = IDL.Record({
'num_blocks_to_archive' : IDL.Nat64,
'max_transactions_per_response' : IDL.Opt(IDL.Nat64),
'trigger_threshold' : IDL.Nat64,
'more_controller_ids' : IDL.Opt(IDL.Vec(IDL.Principal)),
'max_message_size_bytes' : IDL.Opt(IDL.Nat64),
'cycles_for_archive_creation' : IDL.Opt(IDL.Nat64),
'node_max_memory_size_bytes' : IDL.Opt(IDL.Nat64),
'controller_id' : IDL.Principal,
});
const InitArgs = IDL.Record({
'send_whitelist' : IDL.Vec(IDL.Principal),
'token_symbol' : IDL.Opt(IDL.Text),
'transfer_fee' : IDL.Opt(Tokens),
'minting_account' : TextAccountIdentifier,
'transaction_window' : IDL.Opt(Duration),
'max_message_size_bytes' : IDL.Opt(IDL.Nat64),
'icrc1_minting_account' : IDL.Opt(Account),
'archive_options' : IDL.Opt(ArchiveOptions),
'initial_values' : IDL.Vec(IDL.Tuple(TextAccountIdentifier, Tokens)),
'token_name' : IDL.Opt(IDL.Text),
'feature_flags' : IDL.Opt(FeatureFlags),
});
const LedgerCanisterPayload = IDL.Variant({
'Upgrade' : IDL.Opt(UpgradeArgs),
'Init' : InitArgs,
});
const AccountIdentifier = IDL.Vec(IDL.Nat8);
const AccountBalanceArgs = IDL.Record({ 'account' : AccountIdentifier });
const AccountBalanceArgsDfx = IDL.Record({
'account' : TextAccountIdentifier,
});
const Archive = IDL.Record({ 'canister_id' : IDL.Principal });
const Archives = IDL.Record({ 'archives' : IDL.Vec(Archive) });
const GetAllowancesArgs = IDL.Record({
'prev_spender_id' : IDL.Opt(TextAccountIdentifier),
'from_account_id' : TextAccountIdentifier,
'take' : IDL.Opt(IDL.Nat64),
});
const Allowances = IDL.Vec(
IDL.Record({
'from_account_id' : TextAccountIdentifier,
'to_spender_id' : TextAccountIdentifier,
'allowance' : Tokens,
'expires_at' : IDL.Opt(IDL.Nat64),
})
);
const Icrc1Tokens = IDL.Nat;
const Value = IDL.Variant({
'Int' : IDL.Int,
'Nat' : IDL.Nat,
'Blob' : IDL.Vec(IDL.Nat8),
'Text' : IDL.Text,
});
const Icrc1Timestamp = IDL.Nat64;
const TransferArg = IDL.Record({
'to' : Account,
'fee' : IDL.Opt(Icrc1Tokens),
'memo' : IDL.Opt(IDL.Vec(IDL.Nat8)),
'from_subaccount' : IDL.Opt(SubAccount),
'created_at_time' : IDL.Opt(Icrc1Timestamp),
'amount' : Icrc1Tokens,
});
const Icrc1BlockIndex = IDL.Nat;
const Icrc1TransferError = IDL.Variant({
'GenericError' : IDL.Record({
'message' : IDL.Text,
'error_code' : IDL.Nat,
}),
'TemporarilyUnavailable' : IDL.Null,
'BadBurn' : IDL.Record({ 'min_burn_amount' : Icrc1Tokens }),
'Duplicate' : IDL.Record({ 'duplicate_of' : Icrc1BlockIndex }),
'BadFee' : IDL.Record({ 'expected_fee' : Icrc1Tokens }),
'CreatedInFuture' : IDL.Record({ 'ledger_time' : IDL.Nat64 }),
'TooOld' : IDL.Null,
'InsufficientFunds' : IDL.Record({ 'balance' : Icrc1Tokens }),
});
const Icrc1TransferResult = IDL.Variant({
'Ok' : Icrc1BlockIndex,
'Err' : Icrc1TransferError,
});
const icrc21_consent_message_metadata = IDL.Record({
'utc_offset_minutes' : IDL.Opt(IDL.Int16),
'language' : IDL.Text,
});
const icrc21_consent_message_spec = IDL.Record({
'metadata' : icrc21_consent_message_metadata,
'device_spec' : IDL.Opt(
IDL.Variant({
'GenericDisplay' : IDL.Null,
'LineDisplay' : IDL.Record({
'characters_per_line' : IDL.Nat16,
'lines_per_page' : IDL.Nat16,
}),
})
),
});
const icrc21_consent_message_request = IDL.Record({
'arg' : IDL.Vec(IDL.Nat8),
'method' : IDL.Text,
'user_preferences' : icrc21_consent_message_spec,
});
const icrc21_consent_message = IDL.Variant({
'LineDisplayMessage' : IDL.Record({
'pages' : IDL.Vec(IDL.Record({ 'lines' : IDL.Vec(IDL.Text) })),
}),
'GenericDisplayMessage' : IDL.Text,
});
const icrc21_consent_info = IDL.Record({
'metadata' : icrc21_consent_message_metadata,
'consent_message' : icrc21_consent_message,
});
const icrc21_error_info = IDL.Record({ 'description' : IDL.Text });
const icrc21_error = IDL.Variant({
'GenericError' : IDL.Record({
'description' : IDL.Text,
'error_code' : IDL.Nat,
}),
'InsufficientPayment' : icrc21_error_info,
'UnsupportedCanisterCall' : icrc21_error_info,
'ConsentMessageUnavailable' : icrc21_error_info,
});
const icrc21_consent_message_response = IDL.Variant({
'Ok' : icrc21_consent_info,
'Err' : icrc21_error,
});
const AllowanceArgs = IDL.Record({
'account' : Account,
'spender' : Account,
});
const Allowance = IDL.Record({
'allowance' : Icrc1Tokens,
'expires_at' : IDL.Opt(Icrc1Timestamp),
});
const ApproveArgs = IDL.Record({
'fee' : IDL.Opt(Icrc1Tokens),
'memo' : IDL.Opt(IDL.Vec(IDL.Nat8)),
'from_subaccount' : IDL.Opt(SubAccount),
'created_at_time' : IDL.Opt(Icrc1Timestamp),
'amount' : Icrc1Tokens,
'expected_allowance' : IDL.Opt(Icrc1Tokens),
'expires_at' : IDL.Opt(Icrc1Timestamp),
'spender' : Account,
});
const ApproveError = IDL.Variant({
'GenericError' : IDL.Record({
'message' : IDL.Text,
'error_code' : IDL.Nat,
}),
'TemporarilyUnavailable' : IDL.Null,
'Duplicate' : IDL.Record({ 'duplicate_of' : Icrc1BlockIndex }),
'BadFee' : IDL.Record({ 'expected_fee' : Icrc1Tokens }),
'AllowanceChanged' : IDL.Record({ 'current_allowance' : Icrc1Tokens }),
'CreatedInFuture' : IDL.Record({ 'ledger_time' : IDL.Nat64 }),
'TooOld' : IDL.Null,
'Expired' : IDL.Record({ 'ledger_time' : IDL.Nat64 }),
'InsufficientFunds' : IDL.Record({ 'balance' : Icrc1Tokens }),
});
const ApproveResult = IDL.Variant({
'Ok' : Icrc1BlockIndex,
'Err' : ApproveError,
});
const TransferFromArgs = IDL.Record({
'to' : Account,
'fee' : IDL.Opt(Icrc1Tokens),
'spender_subaccount' : IDL.Opt(SubAccount),
'from' : Account,
'memo' : IDL.Opt(IDL.Vec(IDL.Nat8)),
'created_at_time' : IDL.Opt(Icrc1Timestamp),
'amount' : Icrc1Tokens,
});
const TransferFromError = IDL.Variant({
'GenericError' : IDL.Record({
'message' : IDL.Text,
'error_code' : IDL.Nat,
}),
'TemporarilyUnavailable' : IDL.Null,
'InsufficientAllowance' : IDL.Record({ 'allowance' : Icrc1Tokens }),
'BadBurn' : IDL.Record({ 'min_burn_amount' : Icrc1Tokens }),
'Duplicate' : IDL.Record({ 'duplicate_of' : Icrc1BlockIndex }),
'BadFee' : IDL.Record({ 'expected_fee' : Icrc1Tokens }),
'CreatedInFuture' : IDL.Record({ 'ledger_time' : Icrc1Timestamp }),
'TooOld' : IDL.Null,
'InsufficientFunds' : IDL.Record({ 'balance' : Icrc1Tokens }),
});
const TransferFromResult = IDL.Variant({
'Ok' : Icrc1BlockIndex,
'Err' : TransferFromError,
});
const BlockIndex = IDL.Nat64;
const GetBlocksArgs = IDL.Record({
'start' : BlockIndex,
'length' : IDL.Nat64,
});
const Memo = IDL.Nat64;
const TimeStamp = IDL.Record({ 'timestamp_nanos' : IDL.Nat64 });
const Operation = IDL.Variant({
'Approve' : IDL.Record({
'fee' : Tokens,
'from' : AccountIdentifier,
'allowance_e8s' : IDL.Int,
'allowance' : Tokens,
'expected_allowance' : IDL.Opt(Tokens),
'expires_at' : IDL.Opt(TimeStamp),
'spender' : AccountIdentifier,
}),
'Burn' : IDL.Record({
'from' : AccountIdentifier,
'amount' : Tokens,
'spender' : IDL.Opt(AccountIdentifier),
}),
'Mint' : IDL.Record({ 'to' : AccountIdentifier, 'amount' : Tokens }),
'Transfer' : IDL.Record({
'to' : AccountIdentifier,
'fee' : Tokens,
'from' : AccountIdentifier,
'amount' : Tokens,
'spender' : IDL.Opt(IDL.Vec(IDL.Nat8)),
}),
});
const Transaction = IDL.Record({
'memo' : Memo,
'icrc1_memo' : IDL.Opt(IDL.Vec(IDL.Nat8)),
'operation' : IDL.Opt(Operation),
'created_at_time' : TimeStamp,
});
const Block = IDL.Record({
'transaction' : Transaction,
'timestamp' : TimeStamp,
'parent_hash' : IDL.Opt(IDL.Vec(IDL.Nat8)),
});
const BlockRange = IDL.Record({ 'blocks' : IDL.Vec(Block) });
const QueryArchiveError = IDL.Variant({
'BadFirstBlockIndex' : IDL.Record({
'requested_index' : BlockIndex,
'first_valid_index' : BlockIndex,
}),
'Other' : IDL.Record({
'error_message' : IDL.Text,
'error_code' : IDL.Nat64,
}),
});
const QueryArchiveResult = IDL.Variant({
'Ok' : BlockRange,
'Err' : QueryArchiveError,
});
const QueryArchiveFn = IDL.Func(
[GetBlocksArgs],
[QueryArchiveResult],
['query'],
);
const ArchivedBlocksRange = IDL.Record({
'callback' : QueryArchiveFn,
'start' : BlockIndex,
'length' : IDL.Nat64,
});
const QueryBlocksResponse = IDL.Record({
'certificate' : IDL.Opt(IDL.Vec(IDL.Nat8)),
'blocks' : IDL.Vec(Block),
'chain_length' : IDL.Nat64,
'first_block_index' : BlockIndex,
'archived_blocks' : IDL.Vec(ArchivedBlocksRange),
});
const ArchivedEncodedBlocksRange = IDL.Record({
'callback' : IDL.Func(
[GetBlocksArgs],
[
IDL.Variant({
'Ok' : IDL.Vec(IDL.Vec(IDL.Nat8)),
'Err' : QueryArchiveError,
}),
],
['query'],
),
'start' : IDL.Nat64,
'length' : IDL.Nat64,
});
const QueryEncodedBlocksResponse = IDL.Record({
'certificate' : IDL.Opt(IDL.Vec(IDL.Nat8)),
'blocks' : IDL.Vec(IDL.Vec(IDL.Nat8)),
'chain_length' : IDL.Nat64,
'first_block_index' : IDL.Nat64,
'archived_blocks' : IDL.Vec(ArchivedEncodedBlocksRange),
});
const SendArgs = IDL.Record({
'to' : TextAccountIdentifier,
'fee' : Tokens,
'memo' : Memo,
'from_subaccount' : IDL.Opt(SubAccount),
'created_at_time' : IDL.Opt(TimeStamp),
'amount' : Tokens,
});
const TipOfChainRes = IDL.Record({
'certification' : IDL.Opt(IDL.Vec(IDL.Nat8)),
'tip_index' : BlockIndex,
});
const TransferArgs = IDL.Record({
'to' : AccountIdentifier,
'fee' : Tokens,
'memo' : Memo,
'from_subaccount' : IDL.Opt(SubAccount),
'created_at_time' : IDL.Opt(TimeStamp),
'amount' : Tokens,
});
const TransferError = IDL.Variant({
'TxTooOld' : IDL.Record({ 'allowed_window_nanos' : IDL.Nat64 }),
'BadFee' : IDL.Record({ 'expected_fee' : Tokens }),
'TxDuplicate' : IDL.Record({ 'duplicate_of' : BlockIndex }),
'TxCreatedInFuture' : IDL.Null,
'InsufficientFunds' : IDL.Record({ 'balance' : Tokens }),
});
const TransferResult = IDL.Variant({
'Ok' : BlockIndex,
'Err' : TransferError,
});
const TransferFeeArg = IDL.Record({});
const TransferFee = IDL.Record({ 'transfer_fee' : Tokens });
return IDL.Service({
'account_balance' : IDL.Func([AccountBalanceArgs], [Tokens], ['query']),
'account_balance_dfx' : IDL.Func(
[AccountBalanceArgsDfx],
[Tokens],
['query'],
),
'account_identifier' : IDL.Func([Account], [AccountIdentifier], ['query']),
'archives' : IDL.Func([], [Archives], ['query']),
'decimals' : IDL.Func(
[],
[IDL.Record({ 'decimals' : IDL.Nat32 })],
['query'],
),
'get_allowances' : IDL.Func([GetAllowancesArgs], [Allowances], ['query']),
'icrc10_supported_standards' : IDL.Func(
[],
[IDL.Vec(IDL.Record({ 'url' : IDL.Text, 'name' : IDL.Text }))],
['query'],
),
'icrc1_balance_of' : IDL.Func([Account], [Icrc1Tokens], ['query']),
'icrc1_decimals' : IDL.Func([], [IDL.Nat8], ['query']),
'icrc1_fee' : IDL.Func([], [Icrc1Tokens], ['query']),
'icrc1_metadata' : IDL.Func(
[],
[IDL.Vec(IDL.Tuple(IDL.Text, Value))],
['query'],
),
'icrc1_minting_account' : IDL.Func([], [IDL.Opt(Account)], ['query']),
'icrc1_name' : IDL.Func([], [IDL.Text], ['query']),
'icrc1_supported_standards' : IDL.Func(
[],
[IDL.Vec(IDL.Record({ 'url' : IDL.Text, 'name' : IDL.Text }))],
['query'],
),
'icrc1_symbol' : IDL.Func([], [IDL.Text], ['query']),
'icrc1_total_supply' : IDL.Func([], [Icrc1Tokens], ['query']),
'icrc1_transfer' : IDL.Func([TransferArg], [Icrc1TransferResult], []),
'icrc21_canister_call_consent_message' : IDL.Func(
[icrc21_consent_message_request],
[icrc21_consent_message_response],
[],
),
'icrc2_allowance' : IDL.Func([AllowanceArgs], [Allowance], ['query']),
'icrc2_approve' : IDL.Func([ApproveArgs], [ApproveResult], []),
'icrc2_transfer_from' : IDL.Func(
[TransferFromArgs],
[TransferFromResult],
[],
),
'is_ledger_ready' : IDL.Func([], [IDL.Bool], ['query']),
'name' : IDL.Func([], [IDL.Record({ 'name' : IDL.Text })], ['query']),
'query_blocks' : IDL.Func(
[GetBlocksArgs],
[QueryBlocksResponse],
['query'],
),
'query_encoded_blocks' : IDL.Func(
[GetBlocksArgs],
[QueryEncodedBlocksResponse],
['query'],
),
'send_dfx' : IDL.Func([SendArgs], [BlockIndex], []),
'symbol' : IDL.Func([], [IDL.Record({ 'symbol' : IDL.Text })], ['query']),
'tip_of_chain' : IDL.Func([], [TipOfChainRes], ['query']),
'transfer' : IDL.Func([TransferArgs], [TransferResult], []),
'transfer_fee' : IDL.Func([TransferFeeArg], [TransferFee], ['query']),
});
};
export const init = ({ IDL }) => {
const SubAccount = IDL.Vec(IDL.Nat8);
const Account = IDL.Record({
'owner' : IDL.Principal,
'subaccount' : IDL.Opt(SubAccount),
});
const FeatureFlags = IDL.Record({ 'icrc2' : IDL.Bool });
const UpgradeArgs = IDL.Record({
'icrc1_minting_account' : IDL.Opt(Account),
'feature_flags' : IDL.Opt(FeatureFlags),
});
const Tokens = IDL.Record({ 'e8s' : IDL.Nat64 });
const TextAccountIdentifier = IDL.Text;
const Duration = IDL.Record({ 'secs' : IDL.Nat64, 'nanos' : IDL.Nat32 });
const ArchiveOptions = IDL.Record({
'num_blocks_to_archive' : IDL.Nat64,
'max_transactions_per_response' : IDL.Opt(IDL.Nat64),
'trigger_threshold' : IDL.Nat64,
'more_controller_ids' : IDL.Opt(IDL.Vec(IDL.Principal)),
'max_message_size_bytes' : IDL.Opt(IDL.Nat64),
'cycles_for_archive_creation' : IDL.Opt(IDL.Nat64),
'node_max_memory_size_bytes' : IDL.Opt(IDL.Nat64),
'controller_id' : IDL.Principal,
});
const InitArgs = IDL.Record({
'send_whitelist' : IDL.Vec(IDL.Principal),
'token_symbol' : IDL.Opt(IDL.Text),
'transfer_fee' : IDL.Opt(Tokens),
'minting_account' : TextAccountIdentifier,
'transaction_window' : IDL.Opt(Duration),
'max_message_size_bytes' : IDL.Opt(IDL.Nat64),
'icrc1_minting_account' : IDL.Opt(Account),
'archive_options' : IDL.Opt(ArchiveOptions),
'initial_values' : IDL.Vec(IDL.Tuple(TextAccountIdentifier, Tokens)),
'token_name' : IDL.Opt(IDL.Text),
'feature_flags' : IDL.Opt(FeatureFlags),
});
const LedgerCanisterPayload = IDL.Variant({
'Upgrade' : IDL.Opt(UpgradeArgs),
'Init' : InitArgs,
});
return [LedgerCanisterPayload];
};